package main

import (
	. "fmt"
	float_calc "gofirst/ch12package/floatcalc"
	int_calc "gofirst/ch12package/intcalc"
	_ "io/ioutil"
)

//1. 新建项目的时候选择go modules
//2. 新建一个包（package）- 新建一个文件的时候，一般小写，不要使用下滑线，越短越好。这个文件加下的所有源码中的package都必须一样
//3.import "包的路径" 实际上很多人会认为导入的是包名
//4.同一个文件夹下的package名称可以不和文件夹一致，但这些源码中的package名称必须一样
//5.在python中可以import一个包中的函数、变量。go由于import的是路径，因此不可以单独倒入某一个变量或者函数
//6.import组，()
//7.在import时，包路径前的.相当于把该包的文件，合并到当前文件中。可以不加前缀直接使用
//8.可以给一个包取别名。在import时，写在包路径前
//9.匿名引用，_。当我们import一个包的时候，这里面的init函数，会自动调用。当我们只希望执行某个包的init函数时，可以使用匿名引用
/*
1.一个包里可以有多个init函数，包加载时，会执行全部的init函数，但并不能保证执行顺序，所以不建议在一个包里放入多个init函数
2.包不能出现循环引用的情况，比如：a包引用了b包，b包引用了c包，c包又引用了a包，则编译不通过
3.包的重复引用是允许的，比如：a包应用了b和c包，b包又引用了c包和d包。这种情况是允许的。并且go的编译器，保证了d的init函数只会执行一次
*/
func main() {
	Println("Hello Go!")
	Println(int_calc.Add(1, 2))
	Println(int_calc.Sub(1, 2))
	Println(float_calc.Add(1.0, 5.0))
}
